const jwt = require('jsonwebtoken')
const expressJWT = require('express-jwt')

// 定义secret秘钥
const secretKey = 'itheima'

// 生成JWT字符串
// 参数1：用户的信息对象
// 参数2：加密的密钥
// 参数3：配置对象，可以配置当前token的有效期
const tokenStr = jwt.sign({username:'1'},secretKey,{expiresIn:'30s'})

// 将JWT字符串还原为JSON对象  unless用来指定哪些接口不需要访问权限
// 只要配置成功，就能把解析出来的信息挂载到req.user中
app.use(expressJWT({secret:secretKey})).unless({path:[/^\/api\//]})

// 解析JWT失败后产生的错误  全局错误中间件
app.use((err,req,res,next)=>{
    //token解析失败后导致的错误
    if(err.name==='UnauthorizedError'){
        return res.send({
            status:401,
            massage:'无效的token'
        })
    }
    res.seng({
        status:500,
        message:'未知的错误'
    })
})


